package com.zq.zhufengfm.widgets;

import android.content.Context;
import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.support.v4.content.ContextCompat;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.zq.zhufengfm.utils.DimensionUtil;

/**
 * Project_name : ZhuFengFM
 * Author : zhaoQiang
 * Date : 2015/10/22,11:24
 * Email : zhaoq_hero@163.com
 */

/**
 * 用于在发现模块中  推荐栏目中 “精品听单”的条目展现
 */
public class SpecialItemView extends RelativeLayout{

    /**
     * 听单的图标
     */
    private ImageView imgIcon;

    /**
     * 听单的标题
     */
    private TextView txtTitle;


    /**
     * 听单子标题   实际上就是描述
     */
    private TextView txtSubtitle;

    /**
     * 听单中的专辑和曲目的数量
     */
    private TextView txtNumber;

    /**
     * 最右侧的箭头
     */
    private ImageView imgArrow;


    /**
     * 底部的线段
     */
   private  ImageView imgLine;


    /**
     * 在代码中  使用new SpecialItemView 的时候调用
     * @param context
     */
    public SpecialItemView(Context context) {
        this(context,null);
    }

    /**
     * 在布局里  xml中使用控件的时候使用的构造功能：
     * @param context
     * @param attrs
     */
    public SpecialItemView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(context, attrs);//可以支持代码  和支持xml两种方式
    }


    private void init(Context context, AttributeSet attrs){
        //初始化相应的控件：

        //----------------添加ImageView
        imgIcon = new ImageView(context);
        //手写属性：
        RelativeLayout.LayoutParams lp =
                new LayoutParams(
                        //包裹内容
                        DimensionUtil.dp2px(context, 80),
                        DimensionUtil.dp2px(context,80)
                );
        //ImageView垂直居中
        //相当于    Layout_centerVertical = true
        lp.addRule(CENTER_VERTICAL);

        //控件需要添加到  哪一个容器中  就用哪一个容器的LayoutParams
        imgIcon.setLayoutParams(lp);//设置参数 layoutParams代表在布局中  android：Layout_XXX属性

        //设置  自定义ids文件中的 资源标识
        imgIcon.setId(R.id.special_item_icon);

        imgIcon.setImageResource(R.drawable.ic_launcher);

        addView(imgIcon);

        //----------------标题部分
        txtTitle = new TextView(context);

        lp = new LayoutParams(
                ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT
        );
        //设置TextView 与ImageView顶部对齐
        lp.addRule(ALIGN_TOP,R.id.special_item_icon);
        //设置TextView在  图片右边
        lp.addRule(RIGHT_OF,R.id.special_item_icon);

        // TODO  需要进行机型适配
        lp.leftMargin = DimensionUtil.dp2px(context,10);//单位为 像素

        txtTitle.setLayoutParams(lp);

        txtTitle.setText("标题");

        //设置字体尺寸
        txtTitle.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18);

        txtTitle.setTextColor(Color.BLACK);

        txtTitle.setId(R.id.special_item_title);

        txtTitle.setSingleLine();

        addView(txtTitle);
        //-------------------------------------

        txtSubtitle = new TextView(context);

        lp = new LayoutParams(
                ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT
        );
        //设置对齐规则

        //垂直居中：
        lp.addRule(CENTER_VERTICAL);

        lp.addRule(ALIGN_LEFT, R.id.special_item_title);

        txtSubtitle.setId(R.id.special_item_subtitle);

        txtSubtitle.setLayoutParams(lp);

        txtSubtitle.setText("subtitle");

        txtSubtitle.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15);

        //单行
        txtSubtitle.setSingleLine();

        addView(txtSubtitle);
        //--------------------专辑数量  的显示

        txtNumber = new TextView(context);

        lp = new LayoutParams(
                ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT
        );
        //设置对齐： 与图片底部对齐    与标题左对齐
        lp.addRule(ALIGN_BOTTOM,R.id.special_item_icon);
        lp.addRule(ALIGN_LEFT, R.id.special_item_title);

        txtNumber.setLayoutParams(lp);
        //
        txtNumber.setText("10首声音");

        txtNumber.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12);

        txtNumber.setId(R.id.special_item_number);

        //给TextView设置左侧的  图标：
        //该方法可以同时设置   左   上   右  下  的图标,图标必须经过 setBounds()
        Resources resources = context.getResources();
        //使用v4包获取Drawable方式：
        Drawable drawableLeft = ContextCompat.getDrawable(context,
                R.mipmap.finding_album_img);
        drawableLeft.setBounds(0, 0, 20, 20);
        txtNumber.setCompoundDrawables(drawableLeft, null, null, null);

        addView(txtNumber);

        //-------------------->>图标的设置

        imgArrow = new ImageView(context);

        lp = new LayoutParams(
                ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT
        );

        imgArrow.setImageResource(R.mipmap.arrow_right);

        //容器右对齐
        lp.addRule(ALIGN_PARENT_RIGHT);

        lp.addRule(CENTER_VERTICAL);

        imgArrow.setLayoutParams(lp);

        addView(imgArrow);

        //-----最后   下面的线-------------------

        imgLine = new ImageView(context);

        lp = new LayoutParams(
                ViewGroup.LayoutParams.WRAP_CONTENT,
                1
        );

        //与title左对齐
        lp.addRule(ALIGN_LEFT,R.id.special_item_title);

        lp.addRule(BELOW,R.id.special_item_number);

        lp.addRule(ALIGN_PARENT_RIGHT);

        //指定线与数量间的距离：
        // 左  上  右 下
        lp.setMargins(0,DimensionUtil.dp2px(context,5),0,0);

        imgLine.setLayoutParams(lp);

        imgLine.setImageResource(R.drawable.shape_line);

        addView(imgLine);
    }



    public void setTitle(String str){

        txtTitle.setText(str);

    }

    /**
     * 设置描述
     * @param subTitle
     */
    public void setSubTitle(String subTitle){

        txtSubtitle.setText(subTitle);

    }

    public void setNumber(String number){

        txtNumber.setText(number);
    }

    /**
     * 设置底部的线是否需要显示
     * @param show
     */
    public void setShowBottomLine(boolean show){

        if (show){
            imgLine.setVisibility(VISIBLE);
        }else{
            //TODO 尝试Gone的情况
            imgLine.setVisibility(INVISIBLE);
        }
    }

    public void setRightArrowResource(int resId){
        imgArrow.setImageResource(resId);
    }


    public ImageView getImgIcon(){
        return imgIcon;
    }



}
